nethackfandomcom-20200214-history
Source:NetHack 3.3.0/permonst.h
Below is the full text to permonst.h from the source code of NetHack 3.3.0. To link to a particular line, write [[NetHack 3.3.0/permonst.h#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)permonst.h 3.3 99/07/02 */ 2. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4. 5. #ifndef PERMONST_H 6. #define PERMONST_H 7. 8. /* This structure covers all attack forms. 9. * aatyp is the gross attack type (eg. claw, bite, breath, ...) 10. * adtyp is the damage type (eg. physical, fire, cold, spell, ...) 11. * damn is the number of hit dice of damage from the attack. 12. * damd is the number of sides on each die. 13. * 14. * Some attacks can do no points of damage. Additionally, some can 15. * have special effects *and* do damage as well. If damn and damd 16. * are set, they may have a special meaning. For example, if set 17. * for a blinding attack, they determine the amount of time blinded. 18. */ 19. 20. struct attack { 21. uchar aatyp; 22. uchar adtyp, damn, damd; 23. }; 24. 25. /* Max # of attacks for any given monster. 26. */ 27. 28. #define NATTK 6 29. 30. /* Weight of a human body 31. */ 32. 33. #define WT_HUMAN 1450 34. 35. #ifndef ALIGN_H 36. #include "align.h" 37. #endif 38. #include "monattk.h" 39. #include "monflag.h" 40. 41. struct permonst { 42. const char *mname; /* full name */ 43. char mlet; /* symbol */ 44. schar mlevel, /* base monster level */ 45. mmove, /* move speed */ 46. ac, /* (base) armor class */ 47. mr; /* (base) magic resistance */ 48. aligntyp maligntyp; /* basic monster alignment */ 49. unsigned short geno; /* creation/geno mask value */ 50. struct attack mattkNATTK; /* attacks matrix */ 51. unsigned short cwt, /* weight of corpse */ 52. cnutrit; /* its nutritional value */ 53. short pxlth; /* length of extension */ 54. uchar msound; /* noise it makes (6 bits) */ 55. uchar msize; /* physical size (3 bits) */ 56. uchar mresists; /* resistances */ 57. uchar mconveys; /* conveyed by eating */ 58. unsigned long mflags1, /* boolean bitflags */ 59. mflags2; /* more boolean bitflags */ 60. unsigned short mflags3; /* yet more boolean bitflags */ 61. # ifdef TEXTCOLOR 62. uchar mcolor; /* color to use */ 63. # endif 64. }; 65. 66. extern NEARDATA struct permonst 67. mons[]; /* the master list of monster types */ 68. 69. #define VERY_SLOW 3 70. #define SLOW_SPEED 9 71. #define NORMAL_SPEED 12 /* movement rates */ 72. #define FAST_SPEED 15 73. #define VERY_FAST 24 74. 75. #define NON_PM PM_PLAYERMON /* "not a monster" */ 76. #define LOW_PM (NON_PM+1) /* first monster in mons[] */ 77. #define SPECIAL_PM PM_LONG_WORM_TAIL /* normal < ~ < special */ 78. /* monsSPECIAL_PM through monsNUMMONS-1, inclusive, are 79. never generated randomly and cannot be polymorphed into */ 80. 81. #endif /* PERMONST_H */ permonst.h